#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time : 2021/4/25 8:00 下午
# @Author : sxt
# @Version：V 1.0
# @File : permissions.py
# @desc : 权限
from rest_framework.permissions import BasePermission, SAFE_METHODS


class SuperUserPermission(BasePermission):
    message = "sorry,您没有权限"

    def has_permission(self, request, view):
        """
        判断该用户有没有权限
        """
        # 判断用户是不是超级用户
        # 如果是超级用户就返回True
        # 如果是普通用户就返会False

        if request.method in ["GET", "POST", "PUT", "DELETE"]:
            user = request.user
            if user and user.is_superuser == 1:  # 是超级用户
                return True
            else:
                return False
        else:
            return True


class IsOwnerOrReadOnly(BasePermission):
    """
    对象级权限，只允许对象的所有者编辑它
    """

    # 它会来检测我们的obj, 这个obj就是我们从数据库取出来的obj
    def has_object_permission(self, request, view, obj):
        # 读取权限允许任何请求，
        # 所以我们总是允许GET、HEAD或OPTIONS请求。
        if request.method in SAFE_METHODS:
            return True

        # 否则我们就判断, 当前数据的用户名是否跟当前用户一致
        # model实例obj
        return obj.creator == request.user
